//===----------------------------------------------------------------------===//
//
// This source file is part of the Soto for AWS open source project
//
// Copyright (c) 2017-2022 the Soto project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Soto project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//

// THIS FILE IS AUTOMATICALLY GENERATED by https://github.com/soto-project/soto-codegenerator.
// DO NOT EDIT.

#if compiler(>=5.5.2) && canImport(_Concurrency)

import SotoCore

@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
extension IoTThingsGraph {
    // MARK: Async API Calls

    /// Associates a device with a concrete thing that is in the user's registry. A thing can be associated with only one device at a time. If you associate a thing with a new device id, its previous association will be removed.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func associateEntityToThing(_ input: AssociateEntityToThingRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> AssociateEntityToThingResponse {
        return try await self.client.execute(operation: "AssociateEntityToThing", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a workflow template. Workflows can be created only in the user's namespace. (The public namespace contains only  entities.) The workflow can contain only entities in the specified namespace. The workflow is validated against the entities in the  latest version of the user's namespace unless another namespace version is specified in the request.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func createFlowTemplate(_ input: CreateFlowTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateFlowTemplateResponse {
        return try await self.client.execute(operation: "CreateFlowTemplate", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a system instance.  This action validates the system instance, prepares the deployment-related resources. For Greengrass deployments, it updates the Greengrass group that is  specified by the greengrassGroupName parameter. It also adds a file to the S3 bucket specified by the s3BucketName parameter. You need to  call DeploySystemInstance after running this action. For Greengrass deployments, since this action modifies and adds resources to a Greengrass group and an S3 bucket on the caller's behalf, the calling identity must have write permissions  to both the specified Greengrass group and S3 bucket. Otherwise, the call will fail with an authorization error. For cloud deployments, this action requires a flowActionsRoleArn value. This is an IAM role  that has permissions to access AWS services, such as AWS Lambda and AWS IoT, that the flow uses when it executes. If the definition document doesn't specify a version of the user's namespace, the latest version will be used by default.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func createSystemInstance(_ input: CreateSystemInstanceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateSystemInstanceResponse {
        return try await self.client.execute(operation: "CreateSystemInstance", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a system. The system is validated against the entities in the  latest version of the user's namespace unless another namespace version is specified in the request.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func createSystemTemplate(_ input: CreateSystemTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateSystemTemplateResponse {
        return try await self.client.execute(operation: "CreateSystemTemplate", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes a workflow. Any new system or deployment that contains this workflow will fail to update or deploy.  Existing deployments that contain the workflow will continue to run (since they use a snapshot of the workflow taken at the time of deployment).
    @available(*, deprecated, message: "since: 2022-08-30")
    public func deleteFlowTemplate(_ input: DeleteFlowTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteFlowTemplateResponse {
        return try await self.client.execute(operation: "DeleteFlowTemplate", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes the specified namespace. This action deletes all of the entities in the namespace. Delete the systems and flows that use entities in the namespace before performing this action. This action takes no  request parameters.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func deleteNamespace(_ input: DeleteNamespaceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteNamespaceResponse {
        return try await self.client.execute(operation: "DeleteNamespace", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes a system instance.  Only system instances that have never been deployed, or that have been undeployed can be deleted. Users can create a new system instance that has the same ID as a deleted system instance.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func deleteSystemInstance(_ input: DeleteSystemInstanceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteSystemInstanceResponse {
        return try await self.client.execute(operation: "DeleteSystemInstance", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes a system. New deployments can't contain the system after its deletion.  Existing deployments that contain the system will continue to work because they use a snapshot of the system that is taken when it is deployed.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func deleteSystemTemplate(_ input: DeleteSystemTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteSystemTemplateResponse {
        return try await self.client.execute(operation: "DeleteSystemTemplate", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    ///  Greengrass and Cloud Deployments  Deploys the system instance to the target specified in CreateSystemInstance.   Greengrass Deployments  If the system or any workflows and entities have been updated before this action is called, then the deployment will create a new Amazon Simple Storage Service  resource file and then deploy it. Since this action creates a Greengrass deployment on the caller's behalf, the calling identity must have write permissions  to the specified Greengrass group. Otherwise, the call will fail with an authorization error. For information about the artifacts that get added to your Greengrass core device when you use this API, see AWS IoT Things Graph and AWS IoT Greengrass.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func deploySystemInstance(_ input: DeploySystemInstanceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeploySystemInstanceResponse {
        return try await self.client.execute(operation: "DeploySystemInstance", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deprecates the specified workflow. This action marks the workflow for deletion. Deprecated flows can't be deployed, but existing deployments will continue to run.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func deprecateFlowTemplate(_ input: DeprecateFlowTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeprecateFlowTemplateResponse {
        return try await self.client.execute(operation: "DeprecateFlowTemplate", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deprecates the specified system.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func deprecateSystemTemplate(_ input: DeprecateSystemTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeprecateSystemTemplateResponse {
        return try await self.client.execute(operation: "DeprecateSystemTemplate", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Gets the latest version of the user's namespace and the public version that it is tracking.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func describeNamespace(_ input: DescribeNamespaceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DescribeNamespaceResponse {
        return try await self.client.execute(operation: "DescribeNamespace", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Dissociates a device entity from a concrete thing. The action takes only the type of the entity that you need to dissociate because only  one entity of a particular type can be associated with a thing.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func dissociateEntityFromThing(_ input: DissociateEntityFromThingRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DissociateEntityFromThingResponse {
        return try await self.client.execute(operation: "DissociateEntityFromThing", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Gets definitions of the specified entities. Uses the latest version of the user's namespace by default. This API returns the  following TDM entities.   Properties   States   Events   Actions   Capabilities   Mappings   Devices   Device Models   Services   This action doesn't return definitions for systems, flows, and deployments.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func getEntities(_ input: GetEntitiesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetEntitiesResponse {
        return try await self.client.execute(operation: "GetEntities", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Gets the latest version of the DefinitionDocument and FlowTemplateSummary for the specified workflow.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func getFlowTemplate(_ input: GetFlowTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetFlowTemplateResponse {
        return try await self.client.execute(operation: "GetFlowTemplate", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Gets revisions of the specified workflow. Only the last 100 revisions are stored. If the workflow has been deprecated,  this action will return revisions that occurred before the deprecation. This action won't work for workflows that have been deleted.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func getFlowTemplateRevisions(_ input: GetFlowTemplateRevisionsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetFlowTemplateRevisionsResponse {
        return try await self.client.execute(operation: "GetFlowTemplateRevisions", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Gets the status of a namespace deletion task.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func getNamespaceDeletionStatus(_ input: GetNamespaceDeletionStatusRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetNamespaceDeletionStatusResponse {
        return try await self.client.execute(operation: "GetNamespaceDeletionStatus", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Gets a system instance.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func getSystemInstance(_ input: GetSystemInstanceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSystemInstanceResponse {
        return try await self.client.execute(operation: "GetSystemInstance", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Gets a system.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func getSystemTemplate(_ input: GetSystemTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSystemTemplateResponse {
        return try await self.client.execute(operation: "GetSystemTemplate", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Gets revisions made to the specified system template. Only the previous 100 revisions are stored. If the system has been deprecated, this action will return  the revisions that occurred before its deprecation. This action won't work with systems that have been deleted.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func getSystemTemplateRevisions(_ input: GetSystemTemplateRevisionsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSystemTemplateRevisionsResponse {
        return try await self.client.execute(operation: "GetSystemTemplateRevisions", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Gets the status of the specified upload.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func getUploadStatus(_ input: GetUploadStatusRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetUploadStatusResponse {
        return try await self.client.execute(operation: "GetUploadStatus", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Returns a list of objects that contain information about events in a flow execution.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func listFlowExecutionMessages(_ input: ListFlowExecutionMessagesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListFlowExecutionMessagesResponse {
        return try await self.client.execute(operation: "ListFlowExecutionMessages", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Lists all tags on an AWS IoT Things Graph resource.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func listTagsForResource(_ input: ListTagsForResourceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListTagsForResourceResponse {
        return try await self.client.execute(operation: "ListTagsForResource", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Searches for entities of the specified type. You can search for entities in your namespace and the public namespace that you're tracking.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchEntities(_ input: SearchEntitiesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> SearchEntitiesResponse {
        return try await self.client.execute(operation: "SearchEntities", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Searches for AWS IoT Things Graph workflow execution instances.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchFlowExecutions(_ input: SearchFlowExecutionsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> SearchFlowExecutionsResponse {
        return try await self.client.execute(operation: "SearchFlowExecutions", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Searches for summary information about workflows.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchFlowTemplates(_ input: SearchFlowTemplatesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> SearchFlowTemplatesResponse {
        return try await self.client.execute(operation: "SearchFlowTemplates", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Searches for system instances in the user's account.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchSystemInstances(_ input: SearchSystemInstancesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> SearchSystemInstancesResponse {
        return try await self.client.execute(operation: "SearchSystemInstances", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Searches for summary information about systems in the user's account. You can filter by the ID of a workflow to return only systems that use the specified workflow.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchSystemTemplates(_ input: SearchSystemTemplatesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> SearchSystemTemplatesResponse {
        return try await self.client.execute(operation: "SearchSystemTemplates", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Searches for things associated with the specified entity. You can search by both device and device model. For example, if two different devices, camera1 and camera2, implement the camera device model, the user can associate thing1 to camera1 and thing2 to camera2. SearchThings(camera2) will return only thing2, but SearchThings(camera) will return both thing1 and thing2. This action searches for exact matches and doesn't perform partial text matching.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchThings(_ input: SearchThingsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> SearchThingsResponse {
        return try await self.client.execute(operation: "SearchThings", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a tag for the specified resource.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func tagResource(_ input: TagResourceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> TagResourceResponse {
        return try await self.client.execute(operation: "TagResource", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Removes a system instance from its target (Cloud or Greengrass).
    @available(*, deprecated, message: "since: 2022-08-30")
    public func undeploySystemInstance(_ input: UndeploySystemInstanceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UndeploySystemInstanceResponse {
        return try await self.client.execute(operation: "UndeploySystemInstance", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Removes a tag from the specified resource.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func untagResource(_ input: UntagResourceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UntagResourceResponse {
        return try await self.client.execute(operation: "UntagResource", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Updates the specified workflow. All deployed systems and system instances that use the workflow will see the changes in the flow when it is redeployed. If you don't want this  behavior, copy the workflow (creating a new workflow with a different ID), and update the copy. The workflow can contain only entities in the specified namespace.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func updateFlowTemplate(_ input: UpdateFlowTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateFlowTemplateResponse {
        return try await self.client.execute(operation: "UpdateFlowTemplate", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Updates the specified system. You don't need to run this action after updating a workflow. Any deployment that uses the system will see the changes in the system when it is redeployed.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func updateSystemTemplate(_ input: UpdateSystemTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateSystemTemplateResponse {
        return try await self.client.execute(operation: "UpdateSystemTemplate", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Asynchronously uploads one or more entity definitions to the user's namespace. The document parameter is required if  syncWithPublicNamespace and deleteExistingEntites are false. If the syncWithPublicNamespace parameter  is set to  true, the user's namespace will synchronize with the latest version of the public namespace. If deprecateExistingEntities is set to true,  all entities in the latest version will be deleted before the new DefinitionDocument is uploaded. When a user uploads entity definitions for the first time, the service creates a new namespace for the user. The new namespace tracks the public namespace. Currently users  can have only one namespace. The namespace version increments whenever a user uploads entity definitions that are backwards-incompatible and whenever a user sets the  syncWithPublicNamespace parameter or the deprecateExistingEntities parameter to true. The IDs for all of the entities should be in URN format. Each entity must be in the user's namespace. Users can't create entities in the public namespace, but entity definitions can refer to entities in the public namespace. Valid entities are Device, DeviceModel, Service, Capability, State, Action, Event, Property,  Mapping, Enum.
    @available(*, deprecated, message: "since: 2022-08-30")
    public func uploadEntityDefinitions(_ input: UploadEntityDefinitionsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UploadEntityDefinitionsResponse {
        return try await self.client.execute(operation: "UploadEntityDefinitions", path: "/", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }
}

// MARK: Paginators

@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
extension IoTThingsGraph {
    ///  Gets revisions of the specified workflow. Only the last 100 revisions are stored. If the workflow has been deprecated,  this action will return revisions that occurred before the deprecation. This action won't work for workflows that have been deleted.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    @available(*, deprecated, message: "since: 2022-08-30")
    public func getFlowTemplateRevisionsPaginator(
        _ input: GetFlowTemplateRevisionsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetFlowTemplateRevisionsRequest, GetFlowTemplateRevisionsResponse> {
        return .init(
            input: input,
            command: self.getFlowTemplateRevisions,
            inputKey: \GetFlowTemplateRevisionsRequest.nextToken,
            outputKey: \GetFlowTemplateRevisionsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Gets revisions made to the specified system template. Only the previous 100 revisions are stored. If the system has been deprecated, this action will return  the revisions that occurred before its deprecation. This action won't work with systems that have been deleted.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    @available(*, deprecated, message: "since: 2022-08-30")
    public func getSystemTemplateRevisionsPaginator(
        _ input: GetSystemTemplateRevisionsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetSystemTemplateRevisionsRequest, GetSystemTemplateRevisionsResponse> {
        return .init(
            input: input,
            command: self.getSystemTemplateRevisions,
            inputKey: \GetSystemTemplateRevisionsRequest.nextToken,
            outputKey: \GetSystemTemplateRevisionsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Returns a list of objects that contain information about events in a flow execution.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    @available(*, deprecated, message: "since: 2022-08-30")
    public func listFlowExecutionMessagesPaginator(
        _ input: ListFlowExecutionMessagesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListFlowExecutionMessagesRequest, ListFlowExecutionMessagesResponse> {
        return .init(
            input: input,
            command: self.listFlowExecutionMessages,
            inputKey: \ListFlowExecutionMessagesRequest.nextToken,
            outputKey: \ListFlowExecutionMessagesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Lists all tags on an AWS IoT Things Graph resource.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    @available(*, deprecated, message: "since: 2022-08-30")
    public func listTagsForResourcePaginator(
        _ input: ListTagsForResourceRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListTagsForResourceRequest, ListTagsForResourceResponse> {
        return .init(
            input: input,
            command: self.listTagsForResource,
            inputKey: \ListTagsForResourceRequest.nextToken,
            outputKey: \ListTagsForResourceResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Searches for entities of the specified type. You can search for entities in your namespace and the public namespace that you're tracking.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchEntitiesPaginator(
        _ input: SearchEntitiesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<SearchEntitiesRequest, SearchEntitiesResponse> {
        return .init(
            input: input,
            command: self.searchEntities,
            inputKey: \SearchEntitiesRequest.nextToken,
            outputKey: \SearchEntitiesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Searches for AWS IoT Things Graph workflow execution instances.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchFlowExecutionsPaginator(
        _ input: SearchFlowExecutionsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<SearchFlowExecutionsRequest, SearchFlowExecutionsResponse> {
        return .init(
            input: input,
            command: self.searchFlowExecutions,
            inputKey: \SearchFlowExecutionsRequest.nextToken,
            outputKey: \SearchFlowExecutionsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Searches for summary information about workflows.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchFlowTemplatesPaginator(
        _ input: SearchFlowTemplatesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<SearchFlowTemplatesRequest, SearchFlowTemplatesResponse> {
        return .init(
            input: input,
            command: self.searchFlowTemplates,
            inputKey: \SearchFlowTemplatesRequest.nextToken,
            outputKey: \SearchFlowTemplatesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Searches for system instances in the user's account.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchSystemInstancesPaginator(
        _ input: SearchSystemInstancesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<SearchSystemInstancesRequest, SearchSystemInstancesResponse> {
        return .init(
            input: input,
            command: self.searchSystemInstances,
            inputKey: \SearchSystemInstancesRequest.nextToken,
            outputKey: \SearchSystemInstancesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Searches for summary information about systems in the user's account. You can filter by the ID of a workflow to return only systems that use the specified workflow.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchSystemTemplatesPaginator(
        _ input: SearchSystemTemplatesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<SearchSystemTemplatesRequest, SearchSystemTemplatesResponse> {
        return .init(
            input: input,
            command: self.searchSystemTemplates,
            inputKey: \SearchSystemTemplatesRequest.nextToken,
            outputKey: \SearchSystemTemplatesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Searches for things associated with the specified entity. You can search by both device and device model. For example, if two different devices, camera1 and camera2, implement the camera device model, the user can associate thing1 to camera1 and thing2 to camera2. SearchThings(camera2) will return only thing2, but SearchThings(camera) will return both thing1 and thing2. This action searches for exact matches and doesn't perform partial text matching.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    @available(*, deprecated, message: "since: 2022-08-30")
    public func searchThingsPaginator(
        _ input: SearchThingsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<SearchThingsRequest, SearchThingsResponse> {
        return .init(
            input: input,
            command: self.searchThings,
            inputKey: \SearchThingsRequest.nextToken,
            outputKey: \SearchThingsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }
}

#endif // compiler(>=5.5.2) && canImport(_Concurrency)
